Virtual appliance integration with cloud management software

ABSTRACT

Various embodiments here in provide systems, methods, and software for virtual appliance integration with cloud management software. Some embodiments include a landscape virtualization management application through which software systems in the form of virtual appliances may generated and deployed. Further, metadata included in a data structure of a virtual appliance enable integration with existing cloud management software to allow viewing and searching for available virtual appliances and selecting, deployment, and management thereof.

BACKGROUND INFORMATION

Organizations today typically utilize large, complex software systems tomanage many parts of their operations. Some such software systemsinclude Enterprise Resource Planning (ERP), Customer RelationshipManagement (CRM), Human Capital/Resource Management (HCM/HRM), and thelike. An example developer and supplier of such systems is SAP AG ofWalldorf, Germany. Common amongst these systems is their large scale andhigh flexibility to many possible different scenarios for supportingorganizational processes and policies. However, with their large scaleand high flexibility comes not only complexity, but also expense andrisk for both deployment and maintenance. The expense and risk are alsocompounded by the amount of time needed to deploy, configure, andcustomize such software systems.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a logical block diagram of virtual computing landscape,according to an example embodiment.

FIG. 2 is a block diagram of a virtualization management application,according to an example embodiment.

FIG. 3 is a block diagram of a virtual appliance data structure,according to an example embodiment.

FIG. 4 is a virtual appliance metadata file, according to an exampleembodiment.

FIG. 5 is a block flow diagram of a method, according to an exampleembodiment.

FIG. 6 is a block flow diagram of a method, according to an exampleembodiment.

FIG. 7 is a block diagram of a computing device, according to an exampleembodiment.

DETAILED DESCRIPTION

Organizations desiring to add, or add to, a complex software system,such as an Enterprise Resource Planning (ERP), Customer RelationshipManagement (CRM), or Human Capital/Resource Management (HCM/HRM)software system, typically install an instance of the software systemand then have the system configured and customized to organizationalneeds, policies, legal requirements, and the like. However, as discussedabove, such implementation tasks can be cost, time, and risk intensive,which is further compounded by needed maintenance effort. To reducecost, time, and risk, virtual appliances are utilized.

A virtual appliance is generally a template of an application that mayexist for an entire computing application (e.g., an ERP, CRM, HRMapplications), add-ons or enhancements to an application (e.g., businessintelligence module, mobile module, language or other applicationlocalization module or content, warehouse management, logisticsprocesses), content (e.g., key performance indicators, promotionalcampaign definitions, compliance requirements, workflow processes), data(e.g., contact lists), and the like. Virtual appliance templates aregenerally pre-assembled, pre-configured, and pre-tested for theirrespective purposes. As such, virtual appliances are appliance-like inthat they can essentially be “plugged-in” and they function for theirintended purpose. Virtual appliances typically include binaries whichmay include executable files, configuration data, content files, anddata files that can be instantiated on a virtual machine, or othercomputing device, that includes a minimal amount of preinstalledsoftware. For example, the minimal amount of preinstalled software mayinclude only an operating system or a virtual machine, also referred togenerally herein as an operating system. In some embodiments, a virtualappliance may include not only binaries, configuration data, contentfiles, and data files of the application or software system of thevirtual appliance, but also ancillary software systems that the softwaresystem of the virtual appliance relies upon during execution, such as adatabase management system.

Virtual appliances can be transported rapidly, such as over a network oron a detachable storage device (i.e., external USB hard disk, memorystick, optical disc, etc.). Virtual appliances, once transported totheir destination are then rapidly deployable and are immediatelyfunctional. However, while virtual appliances can be pre-customized andpreconfigured for very specific industries and industry segments,virtual appliances are often generic implementations of the softwaresystems included therein in many regards and are in need of additionalconfiguration and customization to meet the needs of the particularorganization. The additional configuration and customization to date hasbeen performed onsite or by integrators having connectivity to theinstantiated system and requires the system be instantiated for theorganization to allow for configuring and customizing.

Various embodiments herein include at least one of systems, methods, andsoftware for building and transporting centrally configured and modifiedsoftware systems. Such embodiments provide for a virtual appliance to beconfigured and customized prior to transport of the virtual appliance tothe target organization. Once configured and customized, the softwaresystem of the virtual appliance is reassembled into a virtual appliance,transported, and rapidly deployed in a form as needed by theorganization. This results in significant cost, time, and risk exposuremitigation.

As virtual appliances are created and stored, the contents thereof areencapsulated within a virtual appliance data structure. Virtualappliance data structures include binaries, application data, content,configuration data, and other data that may be software system orancillary system or ancillary tool specific. To provide a view of thecontents of a virtual appliance data structure and to provide additionalinformation regarding the virtual appliance of the virtual appliancedata structure, metadata is also present. The metadata is added at atime the virtual appliance is created and may be edited at a later time.

The metadata included in virtual appliances provides a way of describingvirtual appliances that can be integrated within cloud managementsoftware. The metadata is typically provided in an open-standardsformat, such as extensible markup language (XML). This metadata opensthe capabilities of rapidly deployable virtual appliances to cloudmanagement software and other administrative software tools.Additionally, pre-assembled, pre-configured, and pre-tested virtualappliances can be quickly identified, selected, and deployed allowingfor greater agility in system deployment, upgrade, and maintenancewithin minimized exposure.

The metadata of a virtual appliance may include various types ofinformation. For example, the metadata may include descriptiveinformation that provides a textual description of the contents of thevirtual appliance, a reason why the virtual appliance was created, andidentify an industry targeted by the virtual appliance. The metadata mayalso identify a specific entity such as a company or a division of acompany for whom the virtual appliance was created, identify an entitythat created the virtual appliance, and other textual information thatcan assist in choosing a proper virtual appliance.

The virtual appliance metadata may also include information that allowsfor indexing and retrieval of virtual appliances. For example, themetadata may include data fields, such as in the form of XML, that canbe search on to locate, select, and retrieve a virtual appliance datastructure from a virtual appliance repository. The searching andretrieval may be through a virtualization management application orother cloud-computing infrastructure management application as discussedin detail below. In some embodiments, the searching and retrieval may beperformed within an online marketplace of software solutions includingvirtual appliances, such as may be provided by a developer, integrator,or vendor of software systems.

In further embodiments, the virtual appliance metadata may includemetadata that identifies requirements for a computing environment onwhich the software system of the virtual appliance may be installed.Such requirements may identify processing, memory, storage, and networkbandwidth requirements. Such defined in the metadata may also oralternatively identify one or more operating systems or virtual machinesand versions thereof with which the software system of the virtualappliance is compatible and any other software compatibilityrequirements. Additionally, as a virtual appliance may include not onlya software system but also other software systems, applications, tools,and utilities, such as database management systems, the metadata mayalso include licensing information. The licensing information mayidentify what other software licenses need to be obtained for a virtualappliance deployment to be successful or compliant with licensingrequirements or identify software licenses and terms thereof thatincluded when the virtual appliance is procured.

The metadata in these and other embodiments may also include deploymentparameters. Such deployment parameters may be consumed (i.e., utilized)by a process that deploys, or attaches, the virtual appliance to acomputing environment. The deployment parameters may define a directoryor folder structure to be generated in storage and items of the virtualappliance to be stored to each directory or folder. The deploymentparameters may also define user accounts and security privileges to becreated to allow administrator and user access to a deployed virtualappliance. The deployment parameters in some embodiments may also definean order for starting execution of various elements of a deployedvirtual appliance. The deployment parameters may include additionalparameters depending on the particular embodiment, one or more softwaresystems or other software components included in the virtual appliance,and a computing environment to which the virtual appliance is to bedeployed.

Some additional embodiments include a virtualization managementfunctions that may be included in a standalone virtualization managementapplication or included in whole or in part in one or more otherportions of software, such as utilities and administrative tools of anoperating system or virtual machine. Such virtualization managementfunctions may include functions to allow starting and stopping ofsoftware systems, relocation of a software system between computingenvironments (i.e., from one virtual machine to another), softwaresystem copying, software system cloning, and the like. Thevirtualization management functions may also include maintaining avirtual appliance repository into which virtual appliances may beimported, stored, cataloged in a searchable manner, copied to a virtualor physical computing landscape, and attached to a virtual machine orphysical computing device. Such embodiments provide administrators greatflexibility in managing software systems deployed within one or morecomputing environments, whether the computing environments are physicalcomputing landscapes where software system are deployed to one or morephysical computing devices or virtual computing landscapes wheresoftware systems are deployed to one or more virtual machines.

In the following detailed description, reference is made to theaccompanying drawings that form a part hereof, and in which is shown byway of illustration specific embodiments in which the inventive subjectmatter may be practiced. These embodiments are described in sufficientdetail to enable those skilled in the art to practice them, and it is tobe understood that other embodiments may be utilized and thatstructural, logical, and electrical changes may be made withoutdeparting from the scope of the inventive subject matter. Suchembodiments of the inventive subject matter may be referred to,individually and/or collectively, herein by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed.

The following description is, therefore, not to be taken in a limitedsense, and the scope of the inventive subject matter is defined by theappended claims.

The functions or algorithms described herein are implemented inhardware, software or a combination of software and hardware in oneembodiment. The software comprises computer executable instructionsstored on computer readable media such as memory or other type ofstorage devices. Further, described functions may correspond to modules,which may be software, hardware, firmware, or any combination thereof.Multiple functions are performed in one or more modules as desired, andthe embodiments described are merely examples. The software is executedon a digital signal processor, ASIC, microprocessor, or other type ofprocessor operating on a system, such as a personal computer, server, arouter, or other device capable of processing data including networkinterconnection devices.

Some embodiments implement the functions in two or more specificinterconnected hardware modules or devices with related control and datasignals communicated between and through the modules, or as portions ofan application-specific integrated circuit. Thus, the exemplary processflow is applicable to software, firmware, and hardware implementations.

FIG. 1 is a logical block diagram of virtual computing landscape 100,according to an example embodiment. Virtual computing landscapes maytake different forms, and as such, the virtual computing landscape 100is provided merely as one example.

The virtual computing landscape 100 includes a developer/integratorportion 102 and a production/customer portion 104. Thedeveloper/integrator portion 102 is a computing environment within whicha software development organization or a system integrator utilizes todevelop, configure, customize, and test, software systems and virtualappliances. The production/customer portion 104 is a computingenvironment of or contracted by a customer that procures a softwaresystem from the developer or integrator of the developer/integratorportion 102.

The developer/integrator portion 102 includes a network 130 to whichvarious computing devices and software systems are connected. Thenetwork 130 may include one or more of a local area network, wide areanetwork, system area network, the Internet, and other network types. Thevarious computing devices connected to the network 130 typically includeone or more servers 120.

The servers 120 may have software systems deployed directly to thehardware or operating system of a respective server. However, in someembodiments, one or more of the servers 120 may provide a virtualcomputing environment within which one or more virtual machines 122 mayexist and on, or within, which software systems may be deployed. In someembodiments, there may be a plurality of servers 120 providing a varietyof different types of virtual machine computing environments on whichsoftware systems may be deployed. This allows the developer/integratorportion 102 to be utilized to tailor software systems for deployment tovarious different types of virtual machine computing environments ofparticular target organizations or hosted computing environments ofdifferent hosted computing environment (sometimes referred to ascloud-computing) providers.

In some embodiments, each of the one or more servers 120 or one or morevirtual machines thereon provide a cloud-computing environment. Eachcloud-computing environment is a network resource accessible via thenetwork 130. The cloud-computing environments generally provide one orboth of computing and storage capacity via the network 130 as services.A cloud-computing environment typically includes a virtualizedenvironment that is logically distinct from other computing environmentsthat may execute on the same hardware, but are each individuallyaccessible. Thus, one cloud-computing environment may include a hardwareset, such as one or more server 120 computers having one or more virtualmachines that each provide a computing environment within which computerapplications, such as software systems, may execute. In someembodiments, an application server or other process within which dataand service requests may be received via the network 130 and servicedexecute within a virtual machine, as discussed previously. Acloud-computing environment may also include a database or other datastorage application or arrangement logically located therein.

Also connected to the network may be one or more development,customizing, and tuning tools 146. Such tools 146 are utilized by systemadministrators, developers, integrators, and the like to modify, add to,augment, or otherwise make changes or additions to software systemsdeployed on the one or more servers 120 or virtual machines thereon. Thetools 146 are typically utilized to perform such actions with regard tosoftware systems, content, configuration settings, and the like deployedor otherwise stored to one or more virtual machines resident on one ormore of the servers 120 or deployed directly on the hardware of one ormore of the servers 120. Although illustrated distinctly from the one ormore servers 120, the tools 146 may be deployed on one or more of theone or more servers 120 or on a different computing device presentwithin the developer/integrator portion 102 or in another computingenvironment.

In operation, a software system may be deployed to one or more of theservers 120 or virtual machines present thereon. The deployment may befrom a standard installation media, such as an optical disc, of thesoftware system to be deployed. This may also include deployment of adatabase management system and other ancillary systems or programs thatthe deployed software system may rely upon or otherwise interact withwhen deployed. In other embodiments, a virtual appliance may beinstantiated on the one or more servers 120 or one or more virtualmachines present thereon.

Once a software system is deployed, the development, customizing, andtuning tools 146, when present in the particular embodiment, may then beutilized to tailor the software system for a particular targetorganization or industry. A target organization is an entity that hasprocured, or is otherwise considering procurement of, the deployedsoftware system. The tools 146 are utilized to tailor the softwaresystem to meet the business, legal, functional, policy, and otherrequirements and needs of the target organization. The software systemmay then be tested to ensure it is properly functional, evaluated by thetarget organization for compliance, and the subject of other quality andacceptance processes, depending on the particular embodiment.

Once the software system is deemed acceptable, a virtual appliancefactory 144 may execute to generate a new virtual appliance from thesoftware system. The virtual appliance factory 144 may be triggered toexecute based on input and commands received via a virtualizationmanagement application 140. The virtualization management application140 and the virtual appliance factory 144, in typical embodiments, aredeployed and execute on a computing device, such as one or more of theservers 120. In other embodiments, one or both of the virtualizationmanagement application 140 and the virtual appliance factory 144 aredeployed outside of the developer/integrator portion 102 and connect viaa network, such as an Internet connection to the network 130.

In some embodiments, the virtual appliance factory 144, upon receipt ofa command to generate a virtual appliance with regard to a particulardeployed software system, will first stop execution of the softwaresystem and any ancillary software systems thereof, such as a databasemanagement system. In some such embodiments, rather than stoppingexecution, the virtual appliance factory 144 may instead simply blockaccess thereto to prevent data access and modifications to the softwaresystem and its configuration. Regardless, after the software system isstopped or locked, the virtual appliance factory 144 may analyze thesoftware system to identify a structure thereof. This typically includesidentifying the constituent portions of the software system, such asfiles, data, configuration settings, and a folder and data storagestructure where the constituent portions are stored. A virtual appliancedata structure may then be generated and an equivalent folder and datastorage structure generated therein. The identified constituent portionsof the software system are then copied to the virtual appliance datastructure and the structure generated therein. Metadata is thentypically generated to include data descriptive of the software systemincluded in the virtual appliance, minimum resource requirements for acomputing device or virtual machine to which the virtual machine may beattached, user accounts to be established, and configuration settings.The metadata may include a lesser or greater amount of data depending onthe particular embodiment. The metadata is added to the virtualappliance data structure and the virtual appliance data structure isstored, such as to a virtual appliance repository. The software systemmay then be restarted or unlocked.

The virtualization management application 140 may be utilized forvarious purposes with regard to virtual and non-virtual computingenvironments, management thereof, and deployment thereto. In particular,the virtualization management application 140 may provide anadministrator view of software systems deployed to the one or moreservers 120 and virtual machines thereon, which may include variousviews including data representative of a customization status of asoftware system. Thus, when a software system is deemed acceptable, theacceptable status may be reflected within a view of the virtualizationmanagement application 140. The virtualization management application140 may then provide one or more user interface tools to perform variousfunctions, such as to generate a virtual appliance from the acceptablesoftware system by calling one or more services that may be provided bythe virtual appliance factory.

Additionally, the virtualization management application 140, in someembodiments, includes a suite of tools, some of which may include userinterfaces, for managing virtual computing landscapes. A virtualcomputing landscape is generally a virtual computing environment withinwhich there are computing devices on which virtual machines may beinstantiated and computing resources, such as processors, storage, andthe like that may be allocated to virtual machines. Tools of thevirtualization management application 140 may include tools to start andstop software systems, instantiate and dis-instantiate virtual machines,allocate, reallocate, and dis-allocate resources thereto, to relocate orcopy software systems between computing environments, clone softwaresystems, and the like. The virtualization management application mayalso include tools for maintaining a virtual appliance repository 142into which virtual appliances may be imported, stored, cataloged in asearchable manner, copied to a virtual or physical computing landscape,attached to and detached from a virtual machine or physical computingdevice, and replicated from one or more virtual machines or physicalcomputing devices to one or more other virtual machines or physicalcomputing devices. Such embodiments provide administrators greatflexibility in managing software systems deployed within one or morecomputing environments, whether the computing environments are physicalcomputing landscapes where software system are deployed to one or morephysical computing devices, virtual computing landscapes where softwaresystems are deployed to one or more virtual machines, or a combinationof both.

Some embodiments include a user interface tool to generate a virtualappliance from a deployed software system. The user interface in suchembodiments may request various inputs. For example, the user interfacetool may request information regarding a mode of transport for thevirtual appliance to be generated, various elements of the softwaresystem to include in the virtual appliance (i.e., whether or not toinclude the database management system or just certain data storedtherein), and other information depending on the particular embodiment.

The mode of transport, in some such embodiments, may include a selectionof or specification of a network location to which the virtual applianceis to be transmitted. The mode of transport may also include an abilityto specify a storage device, and a type thereof, to which the virtualappliance is to be stored. For example, the storage device may be anetwork drive, a drive of a local computing device, a Universal SerialBus (USB) device such as a hard disk or a memory stick or card, or anoptical disc.

Once such information is received within this user interface tool of thevirtualization management application 140, the virtual appliance factory144 may be triggered. The virtual appliance factory 144 then proceeds togenerate and store a virtual appliance data structure. The virtualappliance data structure will typically include various forms of data.For example, the virtual appliance data structure in some embodimentsincludes binaries and executable files of the software system along withconfiguration data, content, and other data as present in the one ormore computing environments, virtual or otherwise, to which the softwaresystem is deployed. The virtual appliance data structure in suchembodiments may also include metadata identifying the contents of thevirtual appliance data structure, virtual machine or operating systemvariables identifying properties of a computing platform from which thesoftware system was copied. The metadata may further include databasemanagement system compatibility information, data identifying a databasemanagement system and other ancillary systems and programs included inthe virtual appliance data structure, and data defining a data storagestructure to be generated and into which various elements of the virtualappliance data structure are to be deployed. Other data may be includedin the metadata to assist in deployment, cataloging, tracking, and othersuch purposes of the virtual appliance of the virtual appliance datastructure. The virtual appliance factory 144 stores the virtualappliance data structure to an appliance repository 142 and may furtherstore the virtual appliance data structure to other locations. Forexample, when the virtualization management application 140 receivesinput via the user interface tool, discussed above, specifying a mode oftransport, the virtual appliance data structure may be stored to aparticular location (i.e., a particular folder or to a particular USBdevice).

Similarly, when a software system deployed within a computing landscape,such as a virtual computing landscape, is to be replicated or moved toanother machine, the virtualization management application 140 mayutilize the same or a different user interface tool that is tailored tothe specific purpose or includes options that tailor the specific taskof relocating or copying the software system. Such options request inputwith regard to a machine, either virtual or physical, to which thesoftware system is to be copied or relocated. Some such embodimentsinclude one or more options for choosing a virtual machine hosted by athird party. Such options may include an option to select a previouslyprocured third-party hosted virtual machine. In some embodiments, theoptions further include an ability to procure a third-party hostedvirtual machine. The user interface and the virtualization managementapplication 140 may be adapted to communicate with one or morethird-party virtual machine hosts via a defined interface, web services,or other data interfaces accessible via a network.

The appliance repository 142 may simply be a data storage deviceaccessible via the network 130 that stores virtual appliance datastructures. In other embodiments, the appliance repository 142 may be adata storage repository, such as a hard disk, and includes, or otherwiseutilizes, a database management system providing an indexed andsearchable data set of stored virtual appliance data structures. Thedatabase in such embodiments may be populated with data copied from themetadata of each stored virtual appliance data structure. In suchembodiments, the virtualization management application 140 may provideabilities to search and select preexisting virtual appliances stored inthe appliance repository 142 for deployment, modification, transport,and other purposes.

Referring now to the production/customer portion 104, as brieflymentioned above, the production/customer portion 104 is a computingenvironment of or contracted by a customer that procures a softwaresystem from the developer or integrator of the developer/integratorportion 102. For example, the production/customer portion 104 may be acomputing environment maintained by the customer, also referred to aboveas the target entity. In other embodiments, the production/customerportion 104 may be a cloud-computing environment procured from acloud-computing host by the customer. For example, a cloud-computingenvironment procured from a cloud-computing host by the customer may bea third-party hosted virtual machine.

The production/customer portion 104 includes one or more servers 150.The one or more servers 150 may include one or both of standaloneservers and virtual machines 152 deployed thereon. The one or moreservers are connected to a network 160. The network 160 may include oneor more of a local area network, wide area network, system area network,the Internet, and other network types. In some embodiments, the network160 may be directly or indirectly connected to the network 130 of thedeveloper/integrator portion 102, such as to allow for transport ofvirtual appliance data structures.

Also connected to the network 160 is a virtualization managementapplication 170 and an appliance repository 172. In some embodiments,the virtualization management application may be identical to thevirtualization management application 140 of the developer/integratorportion 102 discussed above. However, in other embodiments, thevirtualization management application 170 may be a “light” versionthereof, including less than all management functions and toolsdescribed previous. However, in other embodiments, the virtualizationmanagement application 170 may include additional management functionsand tools. In further embodiments, the virtualization managementapplication 170 provides software tools for specific tasks. For example,such tasks include querying and viewing data representative of virtualappliance data structures stored in the appliance repository 172,selection of a virtual appliance data structure for deployment, andpresentation and selection of one or more servers or virtual machines152 to which a virtual appliance of the selected virtual appliance datastructure is to be deployed. The virtualization management application170 may further include one or more processes to deploy a selectedvirtual appliance to a selected location, to collect and store data withregard to virtual appliance deployments that have been made, and tocollect and store data with regard to statuses of software systemsdeployed as virtual appliances.

Regardless of the functions provided by the virtualization managementapplication 170, and similarly for the virtualization managementapplication 140, the various views of virtual appliances stored in therespective virtual appliance repositories 142, 172 and as deployedwithin the virtual computing landscape 100, or elsewhere, is facilitatedby a standardized data form of metadata included in virtual appliancedata structures. Further, various tools included within thevirtualization management applications 140, 170 perform their respectivefunctions based at least in part on this metadata, such as indetermining resource requirements of virtual appliances when deployed,data storage structures that are to be created and populated withvirtual appliance components and other data, views of available virtualappliances, user accounts to be created during an attachment process,and the like. An example of such metadata is illustrated and describedwith regard to FIG. 4.

FIG. 2 is a block diagram of a virtualization management application202, according to an example embodiment. The virtualization managementapplication 202 is an example of the virtualization managementapplications 140, 170 illustrated and described with regard to FIG. 1.The virtualization management application 202 typically includes atleast a virtual appliance repository module 204, a virtual appliancemanagement module 206, and a virtual machine management module 208. Insome embodiments, the virtualization management application 202 mayfurther include a third-party service management module 210.

The virtual appliance repository module 204 is operable to receive,store, and provide virtual appliances, such as in the form of a virtualappliance data structure as discussed above. The virtual appliancerepository module 204 manages virtual appliances stored in a virtualappliance repository, such as a hard disk, database, or other datastorage mechanism, service, or device. A logical or user interface mayoperate to receive data representative of a virtual appliance datastructure to be imported, receive the corresponding data, and processthat data. The processing of virtual appliance data may includeimporting metadata descriptive of the contents and compatibilities ofthe virtual appliance. The importing of the metadata typically includesstoring a representation of at least some of the data in an index ordatabase table in a manner to be easily queried when a search ofavailable virtual appliances may be performed.

The virtual appliance management module 206 is at least capable ofpresenting a view of virtual appliances available for deployment from anappliance repository, as managed by the virtual appliance managementmodule 204, receive a selection of a virtual appliance for deployment,and to affect that deployment. The virtual appliance management module206, when presenting views of virtual appliances, generally providesdata regarding virtual appliances as can be gathered from the metadataof each virtual appliance, either directly from the virtual appliancedata structures or as imported into a database from the virtualappliance data structures.

In some embodiments, the virtual appliance management module 206 may befurther capable of building virtual appliances from a deployed softwaresystem. Such embodiments generally also include a virtual appliancefactory, such as virtual appliance factory 144 illustrated and describedabove with regard to FIG. 1.

In embodiments of the virtual appliance management module 206 capable ofbuilding a virtual appliances, the virtual appliance management module206 may receive a command to detach a software system from a firstcomputing device, such as a virtual machine, on which the softwaresystem is installed and has been configured and modified. The commandmay be received via a user interface of a thick client application orvia a network in an embodiment where the virtual appliance managementmodule 206 is a server based and executable module. The virtualappliance management module may then detach the software system from thefirst computing device by copying the software system, includingexecutable files, configuration data, software system content, and otherdata into a virtual appliance data structure. Elements to be copied maybe dictated by a virtual appliance management module 206, by a knownvirtue that the software system is the only software deployed within itscomputing environment, through identification of the software system andretrieval of data via a network service where the data identifies whatis to be copied for the particular software system, and otherprogrammatic, configuration, and retrievable mechanisms and algorithms.In some embodiments, copying the software system into the virtualappliance data structure includes copying all data from the firstcomputing device except for an operating system of the first computingdevice and data present on the computing device only for purposes ofexecuting, configuring, and maintaining the operating system. In somesuch embodiments, although the operating system may not be copied,certain data maintained by the operating system, such as operatingsystem configuration data that is specific to software and data copiedinto the virtual appliance, may also be copied.

The virtual appliance management module 206 may then generate a metadatafile identifying the contents of the virtual appliance data structureand data defining a structure (i.e., folders, network locations, andother data storage locations) within which individual items of thecontents of the virtual appliance data structure are stored and are tobe generated when redeployed. The virtual appliance management module206 may generate further metadata in the metadata file including atleast a portion of the software system configuration data, such as dataidentifying an operating system of the first computing device on whichthe software system was installed and user configuration data defininguser accounts and software system access privileges thereof. Thisadditional metadata may further include data identifying minimumrequirements for a computing environment within which the virtualappliance may be deployed, such as a minimum processing power, neededstorage space, memory, and other system requirements. The virtualappliance management module 206, in such embodiments, may then store thevirtual appliance data structure in the appliance repository, such as bytriggering an import function of the virtual appliance repository module204.

The virtual appliance management module 206, when deploying a virtualappliance, receives a command to attach the virtual appliance to acomputing device, such as a virtual machine including only a virtualmachine operating system or a bare metal computing device including onlyan operating system. In some embodiments, the virtual appliancemanagement module 206 may receive a command including data identifyingthe computing device to which the virtual appliance is to be attached(i.e., deployed) and an identifier of the virtual appliance to attach.The virtual appliance management module 206 may then read data from themetadata of the identified virtual appliance and verify the computingdevice to which the virtual appliance is to be attached is compatiblewith the virtual appliance. For example, the metadata included in a datastructure of the virtual appliance may identify minimums for a computingdevice on which the virtual appliance be deployed, such as storagespace, available or allocated memory, available or allocated processingpower, and the like.

When the second computing device is compatible, the virtual appliancemanagement module 206 may connect to a storage subsystem of a virtualcomputing landscape of the identified computing device, such as astorage array accessible by virtual machines of which the computingdevice is one. The virtual appliance management module 206 may thencreate a structure on the storage subsystem within which to store itemsof the virtual appliance where the structure is created according tovirtual appliance metadata defining the structure within whichindividual items of the contents of the virtual appliance are to bestored. Once the structure is created, the virtual appliance managementmodule 206 copies individual items of the virtual appliance torespective data storage locations within the created structure. Thevirtual appliance management module 206 may further create user accountsand set user access privileges as defined in the virtual appliancemetadata. At this point, the virtual appliance is an identical copy ofthe software system as it was at the time the virtual appliance wascreated from an instance on another computing device, such as throughperformance of a detach operation as previously described. However, somesuch embodiments of the virtual appliance management module 206 mayfurther include a registration process that is executed to register theinstantiated virtual appliance with other modules and processes of thevirtualization management application 202. This registration mayfacilitate management of the instantiated virtual appliance by the othermodules and processes of the virtualization management application 202,such as to perform stop, start, copy, relocate, and other such actionswith regard to the instantiated virtual appliance.

The virtual machine management module 208 includes tools and processthrough which a virtual computing landscape may be managed. For example,various logical and user interfaces may be provided to instantiate anddis-instantiate virtual machines and allocate, reallocate, anddis-allocate resources thereto. Such resources may include processor,storage space, memory, and other computing resources. The virtualmachine management module 208 may also be utilized to relocate virtualmachines from one physical computing device to another physicalcomputing device, to relocate application instances between virtualmachines, and to move other data between virtual machines and computingdevices. Additional functions and tools may also be included in virtualmachine management module 208 in other embodiments.

The third-party service management module 210 includes tools to procureand register cloud-computing resources within the virtualizationmanagement application 202 for utilization and management by the othermodules 204, 206, 208 of the virtualization management application 202.For example, there are cloud-computing hosts that offer hosted virtualmachines and other computing resources that are accessible via anetwork, such as the Internet, once procured. The third-party servicemanagement module 210 provides abilities to procure such resources asneeded, sometimes on demand, and provide connectivity information toallow virtual appliances to be deployed thereto. In such embodiments,some or all of a virtual computing landscape may be procured andaccessible via information provided or as obtained and registered withinthe virtualization management application. Thus, when a virtualappliance is identified for deployment within an attach process of thevirtual appliance management module 206, a virtual machine request maybe generated thereby and provided to the third-party service managementmodule 210. The third-party service management module 210 may thenprocure a virtual machine to which the identified virtual appliance isto be attached. Once procured, the connectivity information for theprocured virtual machine may be provided to the virtual appliancemanagement module 206 which will then proceed with the attach process.In some such embodiments, a request for a virtual machine provided bythe virtual appliance management module 206 includes parameters definingresources needed within the virtual machine to be procured by thethird-party service management module 210. For example, such parametersmay be as specified in or determined from metadata included in a virtualappliance data structure.

FIG. 3 is a block diagram of a virtual appliance data structure 302,according to an example embodiment. The virtual appliance data structure302 is a diagram of data elements that may be included in a virtualappliance data structure that defines a virtual appliance. This exampleis intended only as an illustrative example and not necessarily anexample of all virtual appliance data structures.

The example virtual appliance data structure 302 includes binary files304, application data 306, content files 310, configuration data files312, metadata 314, and other data 308. The binary files 304 are intendedto represent one or more executable files and other code files that maybe script-based or compiled. The application data 306 represents dataelements that may be consumed by the virtual appliance either duringdeployment (i.e., attachment) or during execution. The content files 310represent various items and forms of content that may be consumed by thevirtual appliance during execution and may include document templates,images, graphics, audio files, video files, training materials, andother static or dynamic content. The configuration data files 312represent data files that store configuration data for configuring thevirtual appliance during deployment (i.e., attachment) to controlexecution of virtual appliance. In some embodiments, the configurationdata files 312 may also include preconfigured user accounts that will beestablished during deployment. The other data 308 represents other datathat might be particular to a specific virtual appliance or applicationinstance from which a virtual appliance is generated. The metadata 314represents metadata as previously described herein. An explicit exampleof the metadata 314 according to one example embodiment is illustratedand described with regard to FIG. 4. The various elements of the virtualappliance data structure may include elements of not only a softwaresystem, but also of other components, utilities, programs, systems, andthe like, including a database management system and data to be storedtherein, in various embodiments.

FIG. 4 is a virtual appliance metadata file 402, according to an exampleembodiment. The virtual appliance metadata file 402 is an example of ametadata file that may be included in a virtual appliance datastructure. The virtual appliance metadata file 402 generally includesdata descriptive of the virtual appliance data structure, a virtualappliance encapsulated therein, a computing environment with which thevirtual appliance is compatible (i.e., LINUX operating system release11, patch level 1, etc.). The virtual appliance metadata file 402 mayfurther include data defining user accounts to be generated when thevirtual appliance of the virtual appliance metadata file 402 is deployed(i.e., attached). Additionally, various computing environment variablesmay be included in the virtual appliance metadata file 402, such as anamount of storage space needed to hold a database (<SIZEDB>) and othersuch parameters. Additionally of note, the illustrated virtual appliancemetadata file 402 is not necessarily intended to be an entirety of sucha metadata file. Thus, the length of the virtual appliance metadata file402 is also not intended to be limiting.

FIG. 5 is a block flow diagram of a method 500, according to an exampleembodiment. The method 500 is an example of a method that may beperformed by a virtualization management application, such as thevirtualization management applications 140 or 170 or FIGS. 1 and 202 ofFIG. 2. In some such embodiments, a virtualization managementapplication that performs the method 500 executes on a server as one ormore server processes, services, or modules that are accessible via anetwork, such as a local area network, the Internet, a virtual privatenetwork (VPN), or one or more other network types. The method 500 may beperformed in different forms in various embodiments such that not allelements of the method 500 need to be performed.

In one embodiment, the method 500 includes retrieving 502, from at leastone virtual appliance repository, data representative of virtualappliances available for deployment within the virtual computinglandscape. The available virtual appliances in such embodiments areincluded in virtual appliance data structures stored in the at least onevirtual appliance repository. The method 500 in such embodiments furtherincludes transmitting 504 data presentable in a view of availablevirtual appliances, such as in the form of a markup language that can bepresented within a client user interface. The client user interface maybe a web page presented in a web browser application, a thick or thinclient application, a mobile device app, or other client application,app, or user interface. Subsequently, the method 500 includes receiving506 data representative of a selected virtual appliance, such as mayhave been selected by a user within the client user interface.

In some embodiments, the method 500 includes reading 508 metadata of avirtual appliance data structure, such as a virtual appliance datastructure identified in the received 506 data. As described above, thevirtual appliance data structure may also include one or more of binaryfiles including executable files, configuration data, software systemcontent, and other data of a software system stored on a data storagedevice and deployable to a virtual machine. The metadata that is read506 in such embodiments generally includes data descriptive of thesoftware system included in the virtual appliance data structure,parameters for a virtual machine on which the software system of thevirtual appliance data structure is deployable, and additionalconfiguration data for the software system when deployed. The metadatamay further include data representative of other software includedwithin a virtual appliance, such as data representative of a databasemanagement system and versioning and licensing information with respectthereto.

The method 500 may then identify 510, based on the parameters for avirtual machine on which the software system of the virtual appliancedata structure is deployable, in a dataset representative of virtualmachines present in a virtual computing landscape, virtual machines onwhich the software system of the virtual appliance data structure can bedeployed. In some embodiments, identifying 510 virtual machines on whichthe software system of the virtual appliance data structure can bedeployed includes retrieving, from an external entity, datarepresentative of a virtual machine hosted by the external entity. Theexternal entity may be a third party virtual machine host, orcloud-computing host.

Once such virtual machines are identified 510, the method 500 may thentransmit 512 data, presentable in a view, representative of theidentified virtual machines on which the software system of the virtualappliance data structure can be deployed. In some further embodiments,the method 500 may include receiving data representative of a virtualmachine on which to software system of the virtual appliance datastructure is to be deployed. The deployment may then commence. Thedeployment may include connecting to a storage subsystem of the virtualcomputing landscape, creating a structure on the storage subsystemwithin which to store the virtual appliance data structure, thestructure created according to the metadata, and copying, to thestructure, the virtual appliance data structure from a virtual appliancerepository where the virtual appliance data structure is stored. Oncethe copy is complete, the method 500 may include executing an attachutility to instantiate the virtual appliance on the virtual machineaccording to the virtual machine metadata and starting the virtualappliance once instantiated.

FIG. 6 is a block flow diagram of a method 600, according to an exampleembodiment. The method 600 is an example of a method that may beperformed by in whole or in part by one or both of a virtualizationmanagement application, such as the virtualization managementapplications 142 or 172 or FIGS. 1 and 202 of FIG. 2, and a virtualappliance factory, such as virtual appliance factory 144 of FIG. 1, whenbuilding a virtual appliance. In some such embodiments, a virtualizationmanagement application or virtual appliance factory that performs themethod 600 executes on a server as one or more server processes,services, or modules that are accessible via a network, such as a localarea network, the Internet, a virtual private network (VPN), or one ormore other network types. The method 600 may be performed in differentforms in various embodiments such that not all elements of the method600 need to be performed.

As illustrated, the method 600 includes receiving 602 a command to builda virtual appliance data structure with regard to a software systeminstalled and configured on a computing device. The command to build thevirtual appliance is typically received 602 via a network. The method600 will then create 604 a virtual appliance data structure and copy 606the software system, including executable files, configuration data,software system content, and other data into the virtual appliance datastructure. A metadata file may then be generated 608 and populated withmetadata descriptive of the software system copied to the virtualappliance data structure. The metadata file may further be populatedwith parameters for a virtual machine on which the software systemcopied to the virtual appliance data structure is deployable andadditional configuration data for the software system when deployed.Such additional configuration data may include data to be stored asconfiguration settings of the software system itself or other softwarethat is a part of the virtual appliance or an operating system, such asa virtual machine, within which the virtual appliance will be deployed.The metadata file is then added 610 to the virtual appliance datastructure and the virtual appliance data structure is then stored 612.The virtual appliance data structure, in such embodiments is stored on adata storage device, such as a hard disk, a portable hard disk, a USBdata storage device, or other non-transitory medium. In someembodiments, the storing 612 of the virtual appliance data structure isto a data storage device of or managed by a virtual appliancerepository, such as one of virtual appliance repositories 142 and 172 ofFIG. 1.

In some embodiments of the method 600, the copying 606 of the softwaresystem to the virtual appliance data structure includes copyingexecutable files, configuration data, software system content, and otherdata of the software system. In some such embodiments, the copying 606may further include copying 606 of other software systems and datadeployed on the computing device other than data, executable files, andother data present on the computing device only for purposes ofexecuting and maintaining the virtual machine, such as a databasemanagement system and data stored therein and managed thereby.

FIG. 7 is a block diagram of a computing device, according to an exampleembodiment. In one embodiment, multiple such computer systems areutilized in a distributed network to implement multiple components in atransaction-based environment. An object-oriented, service-oriented, orother architecture may be used to implement such functions andcommunicate between the multiple systems and components. Oneexample-computing device in the form of a computer 710, may include aprocessing unit 702, memory 704, removable storage 712, andnon-removable storage 714. Although the example-computing device isillustrated and described as computer 710, the computing device may bein different forms in different embodiments. For example, the computingdevice may instead be a smartphone, a tablet, or other computing deviceincluding the same or similar elements as illustrated and described withregard to FIG. 7. Further, although the various data storage elementsare illustrated as part of the computer 710, the storage may also oralternatively include cloud-based storage accessible via a network, suchas the Internet.

Returning to the computer 710, memory 704 may include volatile memory706 and non-volatile memory 708. Computer 710 may include—or have accessto a computing environment that includes a variety of computer-readablemedia, such as volatile memory 706 and non-volatile memory 708,removable storage 712 and non-removable storage 714. Computer storageincludes random access memory (RAM), read only memory (ROM), erasableprogrammable read-only memory (EPROM) & electrically erasableprogrammable read-only memory (EEPROM), flash memory or other memorytechnologies, compact disc read-only memory (CD ROM), Digital VersatileDisks (DVD) or other optical disk storage, magnetic cassettes, magnetictape, magnetic disk storage or other magnetic storage devices, or anyother medium capable of storing computer-readable instructions. Computer710 may include or have access to a computing environment that includesinput 716, output 718, and a communication connection 720. The input 716may include one or more of a touchscreen, touchpad, mouse, keyboard,camera, and other input devices. The computer may operate in a networkedenvironment using a communication connection 720 to connect to one ormore remote computers, such as database servers, web servers, and othercomputing device. An example remote computer may include a personalcomputer (PC), server, router, network PC, a peer device or other commonnetwork node, or the like. The communication connection 720 may be anetwork interface device such as one or both of an Ethernet card and awireless card or circuit that may be connected to a network. The networkmay include one or more of a Local Area Network (LAN), a Wide AreaNetwork (WAN), the Internet, and other networks.

Computer-readable instructions stored on a computer-readable medium areexecutable by the processing unit 602 of the computer 610. A hard drive(magnetic disk or solid state), CD-ROM, and RAM are some examples ofarticles including a non-transitory computer-readable medium. Forexample, various computer programs or apps, such as one or moreapplications and modules implementing one or more of the methodsillustrated and described herein or an app or application that executeson a mobile device or is accessible via a web browser, may be stored ona non-transitory computer-readable medium.

It will be readily understood to those skilled in the art that variousother changes in the details, material, and arrangements of the partsand method stages which have been described and illustrated in order toexplain the nature of the inventive subject matter may be made withoutdeparting from the principles and scope of the inventive subject matteras expressed in the subjoined claims.

What is claimed is:
 1. A method comprising: reading metadata of avirtual appliance data structure, the virtual appliance data structureincluding executable files, configuration data, software system content,and other data of a software system stored on a data storage device anddeployable to a virtual machine, the metadata including data descriptiveof the software system included in the virtual appliance data structure,parameters for a virtual machine on which the software system of thevirtual appliance data structure is deployable, and additionalconfiguration data for the software system when deployed; based on theparameters for a virtual machine on which the software system of thevirtual appliance data structure is deployable, identifying, in adataset representative of virtual machines present in a virtualcomputing landscape, virtual machines on which the software system ofthe virtual appliance data structure can be deployed; and transmittingdata presentable in a view of the identified virtual machines on whichthe software system of the virtual appliance data structure can bedeployed.
 2. The method of claim 1, wherein at least one of theconfiguration data and additional configuration data includes data ofuser accounts to be established when deploying the software system on avirtual machine.
 3. The method of claim 1, further comprising:retrieving, from at least one virtual appliance repository, datarepresentative of virtual appliances available for deployment within thevirtual computing landscape, the available virtual appliances beingvirtual appliance data structures stored in the at least one virtualappliance repository; transmitting data presentable in a view ofavailable virtual appliances; receiving data representative of aselected virtual appliance; and wherein reading the metadata of thevirtual appliance data structure is of the virtual appliance datastructure of the selected virtual appliance.
 4. The method of claim 1,wherein the metadata further includes data identifying a databasemanagement system included within the virtual appliance data structure.5. The method of claim 1, wherein identifying virtual machines on whichthe software system of the virtual appliance data structure can bedeployed includes retrieving, from an external entity, datarepresentative of a virtual machine hosted by the external entity. 6.The method of claim 1, further comprising: receiving data representativeof a virtual machine on which to software system of the virtualappliance data structure is to be deployed; connecting to a storagesubsystem of the virtual computing landscape, creating a structure onthe storage subsystem within which to store the virtual appliance datastructure, the structure created according to the metadata, and copying,to the structure, the virtual appliance data structure from a virtualappliance repository where the virtual appliance data structure isstored; and executing an attach utility to instantiate the virtualappliance on the virtual machine according to the virtual machinemetadata and starting the virtual appliance once instantiated.
 7. Themethod of claim 1, wherein the method is performed at least in part byvirtual landscape management application executable by at least oneprocessor of at least one computing device.
 8. A non-transitorycomputer-readable medium, with instructions stored thereon, which whenexecuted by at least one processor cause at least one computer to:receive a command to build a virtual appliance data structure withregard to a software system installed and configured on a computingdevice; create a virtual appliance data structure; copy the softwaresystem, including executable files, configuration data, software systemcontent, and other data into the virtual appliance data structure;generate a metadata file descriptive of the software system copied tothe virtual appliance data structure, parameters for a virtual machineon which the software system copied to the virtual appliance datastructure is deployable, and additional configuration data for thesoftware system when deployed; add the metadata file to the virtualappliance data structure; and store the virtual appliance data structureon a data storage device.
 9. The non-transitory computer-readable mediumof claim 8, wherein at least one of the configuration data and theadditional configuration data include user configuration data defininguser accounts and software system access privileges thereof.
 10. Thenon-transitory computer-readable medium of claim 8, wherein copying thesoftware system to the virtual appliance data structure includes copyingexecutable files, configuration data, software system content, and otherdata of the software system and other software systems and data deployedon the computing device other than data, executable files, and otherdata present on the computing device only for purposes of executing andmaintaining the virtual machine.
 11. The non-transitorycomputer-readable medium of claim 10, wherein copying executable files,configuration data, software system content, and other data of the othersoftware systems and data deployed on the computing device includescopying a database management system and data stored therein.
 12. Thenon-transitory computer-readable medium of claim 8, wherein theparameters for a virtual machine on which the software system copied tothe virtual appliance data structure is deployable includes datarepresentative of minimum computing system requirements in the form ofat least one of a minimum amount of storage, a minimum amount of memory,a minimum of processor speed, and a maximum number of users.
 13. Thenon-transitory computer-readable medium of claim 8, wherein theparameters for a virtual machine on which the software system copied tothe virtual appliance data structure is deployable includes datarepresentative of at least one type of virtual machine on which thesoftware system is deployable.
 14. The non-transitory computer-readablemedium of claim 8, wherein: storing the virtual appliance data structureon the data storage device includes storing the virtual appliance datastructure to a virtual appliance repository; and the instructions arefurther executable to cause the at least one computer to: retrieve, fromthe virtual appliance repository, data representative of virtualappliances available for deployment within a virtual computinglandscape, the available virtual appliances being virtual appliance datastructures stored in the virtual appliance repository and including thevirtual appliance data structure; transmit data presentable in a view ofavailable virtual appliances; receive data indicating a selection of thevirtual appliance data structure; read metadata of the virtual appliancedata structure, the virtual appliance data structure; based on theparameters for a virtual machine on which the software system of thevirtual appliance data structure is deployable, identify, in a datasetrepresentative of virtual machines present in the virtual computinglandscape, virtual machines on which the software system of the virtualappliance data structure can be deployed; and transmit data presentablein a view of the identified virtual machines on which the softwaresystem of the virtual appliance data structure can be deployed.
 15. Asystem comprising: at least one processor, at least one memory device,and at least one network interface; a virtual appliance repositorymodule stored in the at least one memory device and executable at leastin part by the at least one processor to receive, store, and providevirtual appliances; and a virtual appliance management module stored inthe at least one memory device and executable by the at least oneprocessor to: receive, via the at least one network interface device, acommand to build a virtual appliance data structure with regard to asoftware system installed and configured on a computing device; create avirtual appliance data structure; copy the software system, includingexecutable files, configuration data, software system content, and otherdata into the virtual appliance data structure; generate a metadata filedescriptive of the software system copied to the virtual appliance datastructure, parameters for a virtual machine on which the software systemcopied to the virtual appliance data structure is deployable, andadditional configuration data for the software system when deployed; addthe metadata file to the virtual appliance data structure; and store thevirtual appliance data structure in the virtual appliance repository.16. The system of claim 15, wherein at least one of the configurationdata and the additional configuration data include user configurationdata defining user accounts and software system access privilegesthereof.
 17. The system of claim 15, wherein copying the software systemto the virtual appliance data structure includes copying executablefiles, configuration data, software system content, and other data ofthe software system and other software systems and data deployed on thecomputing device other than data, executable files, and other datapresent on the computing device only for purposes of executing andmaintaining the virtual machine.
 18. The system of claim 17, whereincopying executable files, configuration data, software system content,and other data of the other software systems and data deployed on thecomputing device includes copying a database management system and datastored therein.
 19. The system of claim 15, wherein the parameters for avirtual machine on which the software system copied to the virtualappliance data structure is deployable includes data representative ofminimum computing system requirements in the form of at least one of aminimum amount of storage, a minimum amount of memory, a minimum ofprocessor speed, and a maximum number of users.
 20. The system of claim15, wherein: storing the virtual appliance data structure on the datastorage device includes storing the virtual appliance data structure toa virtual appliance repository; and the instructions are furtherexecutable to cause the at least one computer to: retrieve, from thevirtual appliance repository, data representative of virtual appliancesavailable for deployment within a virtual computing landscape, theavailable virtual appliances being virtual appliance data structuresstored in the virtual appliance repository and including the virtualappliance data structure; transmit data presentable in a view ofavailable virtual appliances; receive data indicating a selection of thevirtual appliance data structure; read metadata of the virtual appliancedata structure, the virtual appliance data structure; based on theparameters for a virtual machine on which the software system of thevirtual appliance data structure is deployable, identify, in a datasetrepresentative of virtual machines present in the virtual computinglandscape, virtual machines on which the software system of the virtualappliance data structure can be deployed; and transmit data presentablein a view of the identified virtual machines on which the softwaresystem of the virtual appliance data structure can be deployed.